package com.ithjh.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MyAdvice {
//    @Pointcut("execution(void *.*.*.*.*.update())")
//@Pointcut("execution(void *..update())")
    @Pointcut("execution(* com.ithjh.*.*Service.find*(..))")
//    可以使用通配符描述切入点快速描述
//      *；单个的独立的任意符号，可以独立出现，也可以作为前缀或者后缀的匹配符出现
//          eg：execution(public * com.ithjh.*.UserService.find*(*))
//             匹配com.ithjh包下的任意包中的UserService类或结构中所有find开头的带有一个参数的方法
//      ..：多个连续的任意符号，可以独立出现，长用户简化包名与参数的书写
//          eg：execution(public User com..UserService.findById(..))
//             匹配com包下的任意包中的UserService类或接口中所有名称为findById的方法
//      +:专用于匹配子类类型(了解)
//          eg:execution(* *..*Service+.*(..))
    private void pt(){}

    @Before("pt()")
    public void method(){
        System.out.println(System.currentTimeMillis());
    }
}
